/********************************************************
*  Monica Jimenez Anton                                 *
*  Juan Luis Martinez Cesteros                          *
*  Practica 1 - IGr                                     *
********************************************************///---------------------------------------------------------------------------

#ifndef listaH
#define listaH
//---------------------------------------------------------------------------
template<class T>class Nodo
{
        private:T * dato;
        public: Nodo *sig;
                Nodo();
                ~Nodo();
                Nodo(T * _dato);
                T* getDato();
                void  setDato(T* _dato);
                

};
template <class T>class Lista
{
        private: Nodo<T> * primero;
                 Nodo<T> * indice;
                 int num_nodos;
                 bool avanza();
                 bool inicia();

                 
        public: Lista();
                ~Lista();
                void anadir(T* _dato);
                bool eliminar(int ind);
                bool irAPosicion(int ind);
                T* dameDato(int indice);
                bool modificarDato(int ind,T*dato);
                void limpia();
                void reset();
                int dameNumNodos();
                void intercambiar(int a);
                void ordenarLista();
                int anadirOrd(T* _dato);
                int buscaDato(T* dato);
                bool igual(Lista <T> * l);
                bool esVacia();
                



};

#endif
 